package aplicacao;

import escalonamento.EscalonamentoFCFS;
import escalonamento.EscalonamentoPP;
import escalonamento.EscalonamentoRR;
import escalonamento.EscalonamentoSRT;
import java.util.ArrayList;
import model.Arquivo;
import model.Processo;

/**
 *
 * @author João Gonçalves
 * @author Eventon Silva
 */
public class Escalonamentos {

    /**
     *
     * @param args args[0] - passa o arquivo de entrada para a aplicação e o
     * args[1] - indica qual é o escalonamento será executado.
     */
    public static void main(String[] args) {
        try {

            ArrayList<Processo> processos = Arquivo.carregarArquivo(args[0]);
            
            /**
             * No JDK 6 deve-se usar o if... else if... .
             */
            switch (args[1]) {
                case "fcfs":
                    EscalonamentoFCFS escalonamentoFCFS = new EscalonamentoFCFS();
                    escalonamentoFCFS.escalonamento(processos);
                    break;
                case "rr":
                    EscalonamentoRR escalonamentoRR = new EscalonamentoRR();
                    escalonamentoRR.escalonamento(processos);
                    break;
                case "pp":
                    EscalonamentoPP escalonamentoPP = new EscalonamentoPP();
                    escalonamentoPP.escalonamento(processos);
                    break;
                case "custom":
                    EscalonamentoSRT escalonamentoSRT = new EscalonamentoSRT();
                    escalonamentoSRT.escalonamento(processos);
                    break;
                default:
                    System.out.println("Escalomento " + args[1] + " não disponível!");
                    break;
            }

        } catch (ArrayIndexOutOfBoundsException aiobe) {

            System.out.printf("Paramentros errados, favor corrigir o %do paramentro (caminho do arquivo)! \n" + aiobe,
                    Integer.parseInt(aiobe.getMessage()) + 1);
        }
    }
}